// 对于任意数字 n ，将 n 和 n−1 做与运算，会把最后一个 1 的位变成 0 。为什么？考虑 n 和 n−1 的二进制表示。
public static int OneBits(long num) {
    int count = 0;
    while(num != 0) {
    num = (num - 1) & num;
        count ++;
    }
    return count;
}
